home *** CD-ROM | disk | FTP | other *** search
/ United Public Domain Gold 2 / United Public Domain Gold 2.iso / utilities / pu328.dms / pu328.adf / Install / Install.s < prev    next >
Text File  |  1992-04-26  |  13KB  |  649 lines

  1.         opt    o+,ow-,ow6+
  2.         output    Source:Install
  3.  
  4.         ; Install v1.1
  5.         ; © 1990 by David Kinder
  6.  
  7.         ; "It installs disks!"
  8.  
  9.         ; Assemble using Devpac v3
  10.  
  11.         ; Note that the header "system.gs" must be compiled
  12.         ; with v36 or higher include files.
  13.  
  14.         ; Thanks to HiSoft, Iron Maiden, Megadeth, Judas Priest,
  15.         ; The Sisters of Mercy, The Damned and Oriel...
  16.  
  17.         section    Install_Code,code
  18.  
  19.         incdir    Source:include/
  20.         include    devices/trackdisk.i
  21.         include    workbench/icon_lib.i
  22.         include    workbench/workbench.i
  23.  
  24. LINKSYS        MACRO                ; A usefull macro, saves
  25.         jsr    _LVO\1(a6)        ; a few bytes
  26.         ENDM
  27.  
  28. LINKDOS        MACRO
  29.         movea.l    _DosBase(a4),a6
  30.         jsr    _LVO\1(a6)
  31.         ENDM
  32.  
  33. LINKICON    MACRO
  34.         movea.l    _IconBase(a4),a6
  35.         jsr    _LVO\1(a6)
  36.         ENDM
  37.  
  38. LINKINT        MACRO
  39.         movea.l    _IntuitionBase(a4),a6
  40.         jsr    _LVO\1(a6)
  41.         ENDM
  42.  
  43.         suba.l    a1,a1
  44.         CALLEXEC FindTask
  45.         move.l    d0,a5
  46.  
  47.         tst.l    pr_CLI(a5)        ; Are we CLI or Workbench?
  48.         beq.s    Do_WBStartup
  49.         move.l    #0,a5
  50.         bra.s    EndStartup
  51.  
  52. Do_WBStartup    lea    pr_MsgPort(a5),a0
  53.         CALLEXEC WaitPort        ; Wait for a message
  54.         lea    pr_MsgPort(a5),a0
  55.         LINKSYS    GetMsg            ; Then get it
  56.         move.l    d0,a5
  57.  
  58. EndStartup    move.l    #Data_SIZEOF,d0
  59.         move.l    #MEMF_CLEAR,d1
  60.         CALLEXEC AllocMem
  61.         movea.l    d0,a4
  62.         tst.l    d0
  63.         beq.s    EndAll
  64.  
  65.         move.l    a5,ReturnMsg(a4)
  66.         bsr.s    _Main
  67.         move.l    ReturnMsg(a4),a5
  68.  
  69.         movea.l    a4,a1
  70.         move.l    #Data_SIZEOF,d0
  71.         CALLEXEC FreeMem
  72.  
  73. EndAll        cmp.l    #0,a5
  74.         beq.s    ExitToDOS
  75.  
  76.         CALLEXEC Forbid
  77.         move.l    a5,a1
  78.         LINKSYS    ReplyMsg
  79.  
  80. ExitToDOS    moveq    #0,d0
  81.         rts
  82.  
  83. _Main        lea    IntName,a1        ; Open 'intuition.library'
  84.         moveq    #36,d0
  85.         CALLEXEC OpenLibrary
  86.         move.l    d0,_IntuitionBase(a4)
  87.         beq.s    NoNewOS
  88.  
  89.         lea    Gadg0,a0
  90.         bsr.s    ModGadg2
  91.         lea    Gadg1,a0
  92.         bsr.s    ModGadg2
  93.         lea    Gadg2,a0
  94.         bsr.s    ModGadg
  95.         lea    Gadg3,a0
  96.         bsr.s    ModGadg
  97.  
  98.         eori    #CHECKED,KS13+mi_Flags
  99.         eori    #CHECKED,KS20+mi_Flags
  100.         bra.s    RunAllOS
  101.  
  102. ModGadg        subi    #1,gg_TopEdge(a0)    ; Changes for OS 2.0
  103. ModGadg2    subi    #2,gg_LeftEdge(a0)
  104.         addi    #4,gg_Width(a0)
  105.         addi    #2,gg_Height(a0)
  106.         move.l    #x2_GBord1,gg_GadgetRender(a0)
  107.         move.l    gg_GadgetText(a0),a1
  108.         addi    #2,it_LeftEdge(a1)
  109.         addi    #1,it_TopEdge(a1)
  110.         move.b    #2,it_FrontPen(a1)
  111.         rts
  112.  
  113. NoNewOS        lea    IntName,a1        ; Try again
  114.         moveq    #0,d0
  115.         CALLEXEC OpenLibrary
  116.         move.l    d0,_IntuitionBase(a4)
  117.         beq    NoIntuition        ; Open failed
  118.  
  119. RunAllOS    lea    DosName,a1        ; Open 'dos.library'
  120.         moveq    #0,d0
  121.         LINKSYS    OpenLibrary
  122.         move.l    d0,_DosBase(a4)
  123.         beq    NoDos
  124.  
  125.         move.l    ReturnMsg(a4),a3    ; Workbench?
  126.         cmpa.l    #0,a3
  127.         beq.s    NoIconLib
  128.  
  129.         lea    IconName,a1        ; Open 'icon.library'
  130.         moveq    #0,d0
  131.         LINKSYS    OpenLibrary
  132.         move.l    d0,_IconBase(a4)
  133.         beq.s    NoIconLib
  134.  
  135.         move.l    sm_ArgList(a3),a3
  136.         move.l    wa_Lock(a3),d1
  137.         LINKDOS    CurrentDir        ; Move to current directory
  138.  
  139.         move.l    wa_Name(a3),a0
  140.         LINKICON GetDiskObject
  141.         move.l    d0,a5
  142.         tst.l    d0
  143.         beq.s    EndIconFind
  144.  
  145.         move.l    do_ToolTypes(a5),a0
  146.         lea    ToolType,a1
  147.         LINKSYS    FindToolType
  148.         beq.s    EndIconCode
  149.  
  150.         move.b    #1,CheckTest(a4)
  151. EndIconCode    move.l    a5,a0
  152.         LINKSYS    FreeDiskObject
  153.  
  154. EndIconFind    move.l    _IconBase(a4),a1
  155.         CALLEXEC CloseLibrary
  156.  
  157. NoIconLib    move.l    #2048,d0
  158.         move.l    #MEMF_CHIP!MEMF_CLEAR,d1
  159.         CALLEXEC AllocMem        ; Get some ChipRam
  160.         move.l    d0,DiskBuffer1(a4)
  161.         beq    NoMemory
  162.         addi.l    #1024,d0
  163.         move.l    d0,DiskBuffer2(a4)
  164.  
  165.         moveq    #0,d0
  166.         lea    SBBlock,a0
  167.         move.l    DiskBuffer1(a4),a1
  168. BootLoop1    move    (a0,d0),(a1,d0)        ; Transfer bootblock
  169.         addq    #2,d0
  170.         cmpi    #EBBlock-SBBlock,d0
  171.         bne    BootLoop1
  172.  
  173.         moveq    #0,d0
  174.         lea    SNBBlock,a0
  175.         move.l    DiskBuffer2(a4),a1
  176. BootLoop2    move    (a0,d0),(a1,d0)
  177.         addq    #2,d0
  178.         cmpi    #ENBBlock-SNBBlock,d0
  179.         bne    BootLoop2
  180.  
  181.         moveq    #MP_SIZE,d0        ; Put together a port where
  182.         move.l    #MEMF_PUBLIC!MEMF_CLEAR,d1
  183.         LINKSYS    AllocMem        ; we can recieve messages
  184.         move.l    d0,a3            ; from 'trackdisk.device'
  185.         beq    NoMemPort
  186.         move.l    a3,MsgPort(a4)
  187.         moveq    #-1,d0
  188.         LINKSYS    AllocSignal
  189.         cmpi.b    #-1,d0
  190.         beq    NoSigPort
  191.         move.b    d0,MP_SIGBIT(a3)
  192.         movea.l    #0,a1
  193.         LINKSYS    FindTask
  194.         move.b    #NT_MSGPORT,LN_TYPE(a3)
  195.         move.b    #PA_SIGNAL,MP_FLAGS(a3)
  196.         move.l    d0,MP_SIGTASK(a3)
  197.         lea    MP_MSGLIST(a3),a0
  198.         NEWLIST    a0
  199.  
  200.         moveq    #IOSTD_SIZE,d0        ; Now use message port
  201.         move.l    #MEMF_PUBLIC!MEMF_CLEAR,d1
  202.         LINKSYS    AllocMem        ; to construct an
  203.         tst.l    d0            ; IORequest struct so we
  204.         beq    NoMemIO            ; can communicate with
  205.         move.l    d0,a0            ; the drive
  206.         move.l    a0,IORequest(a4)
  207.         move.l    a3,MN_REPLYPORT(a0)
  208.         move    #IOSTD_SIZE,MN_LENGTH(a0)
  209.         move.b    #NT_MESSAGE,LN_TYPE(a0)
  210.  
  211.         moveq    #0,d0            ; Which drives are present?
  212.         lea    Gadg0+gg_Flags,a5
  213.         bsr    CheckDevice
  214.         moveq    #1,d0
  215.         lea    Gadg1+gg_Flags,a5
  216.         bsr    CheckDevice
  217.         moveq    #2,d0
  218.         lea    Gadg2+gg_Flags,a5
  219.         bsr    CheckDevice
  220.         moveq    #3,d0
  221.         lea    Gadg3+gg_Flags,a5
  222.         bsr    CheckDevice
  223.  
  224.         lea    MyWindow,a0        ; Open our window on
  225.         LINKINT    OpenWindow        ; Workbench screen
  226.         move.l    d0,Windowhd(a4)
  227.         beq    NoWindow        ; Open window failed
  228.         move.l    d0,a0
  229.         move.l    wd_UserPort(a0),UserPort(a4)
  230.         move.l    wd_RPort(a0),a0
  231.         lea    Text,a1
  232.         moveq    #0,d0
  233.         moveq    #68,d1
  234.         LINKSYS    PrintIText        ; Print credit
  235.         move.l    Windowhd(a4),a0
  236.         lea    BootMenu,a1
  237.         LINKSYS    SetMenuStrip
  238.         move.l    Windowhd(a4),a0
  239.         movea.l    #-1,a1
  240.         lea    ScreenTitle,a2
  241.         LINKSYS    SetWindowTitles        ; Change title
  242.  
  243. MainLoop    move.l    UserPort(a4),a0        ; Wait for an Intuition
  244.         CALLEXEC WaitPort        ; message...
  245. CheckMessage    move.l    UserPort(a4),a0
  246.         CALLEXEC GetMsg
  247.         tst.l    d0
  248.         beq    MainLoop
  249.         move.l    d0,a1
  250.         move.l    im_Class(a1),d2        ; Store the message
  251.         move.l    im_IAddress(a1),a2
  252.         LINKSYS    ReplyMsg
  253.         cmpi.l    #CLOSEWINDOW,d2        ; Is it close time?
  254.         beq.s    QuitProper
  255.         cmpi.l    #GADGETUP,d2
  256.         beq    StartInstall
  257.         bra    CheckMessage
  258.  
  259. QuitProper    move.l    Windowhd(a4),a0        ; Close window
  260.         LINKINT    ClearMenuStrip
  261.         move.l    Windowhd(a4),a0
  262.         LINKSYS    CloseWindow
  263. NoWindow    move.l    IORequest(a4),a1    ; Free IORequest
  264.         moveq    #IOSTD_SIZE,d0
  265.         CALLEXEC FreeMem
  266. NoMemIO        move.l    MsgPort(a4),a3        ; Unlink MsgPort
  267.         moveq    #0,d0
  268.         move.b    MP_SIGBIT(a3),d0
  269.         CALLEXEC FreeSignal
  270. NoSigPort    move.l    MsgPort(a4),a1        ; Free MsgPort
  271.         moveq    #MP_SIZE,d0
  272.         CALLEXEC FreeMem
  273. NoMemPort    move.l    DiskBuffer1(a4),a1    ; Free Buffer
  274.         move.l    #2048,d0
  275.         CALLEXEC FreeMem
  276. NoMemory    move.l    _DosBase(a4),a1        ; Close DOS
  277.         CALLEXEC CloseLibrary
  278. NoDos        move.l    _IntuitionBase(a4),a1    ; Close Intuition
  279.         CALLEXEC CloseLibrary
  280. NoIntuition    rts
  281.  
  282. CheckDevice    lea    TrackDisk,a0        ; Check for a drive and
  283.         move.l    IORequest(a4),a1    ; disable gadget if not
  284.         moveq    #0,d1            ; present
  285.         CALLEXEC OpenDevice
  286.         cmpi    #TDERR_BadDriveType,d0
  287.         bne.s    DeviceOn
  288.         move    #GADGHCOMP!GADGDISABLED,(a5)
  289.         rts
  290. DeviceOn    tst    d0
  291.         bne.s    OtherFail
  292.         move.l    IORequest(a4),a1
  293.         LINKSYS    CloseDevice
  294. OtherFail    rts
  295.  
  296. StartInstall    move.l    DiskBuffer2(a4),DiskBuffer(a4)
  297.         move    KS13+mi_Flags,d0    ; Which bootblock?
  298.         andi    #CHECKED,d0
  299.         beq.s    StartGadg
  300.         move.l    DiskBuffer1(a4),DiskBuffer(a4)
  301.  
  302. StartGadg    move    gg_GadgetID(a2),d0    ; Which gadget was it?
  303.         move.b    d0,d7
  304.         addi.b    #$30,d0
  305.         move.b    d0,CheckTxtPt
  306.         cmpi.b    #1,CheckTest(a4)
  307.         beq.s    NoTest
  308.  
  309.         move.l    Windowhd(a4),a0
  310.         lea    CheckText,a1
  311.         lea    CYes,a2
  312.         lea    CNo,a3
  313.         moveq    #0,d0
  314.         moveq    #0,d1
  315.         move    #360,d2
  316.         moveq    #53,d3
  317.         LINKINT    AutoRequest        ; Are you sure?
  318.         tst.l    d0
  319.         beq    CheckMessage
  320.  
  321. NoTest        lea    TrackDisk,a0
  322.         moveq    #0,d0
  323.         move.b    d7,d0
  324.         move.l    IORequest(a4),a1
  325.         moveq    #0,d1
  326.         CALLEXEC OpenDevice
  327.         beq.s    NoOpenErr
  328.  
  329.         moveq    #1,d0
  330.         bsr    ErrorTime
  331.         bra    CheckMessage
  332.  
  333. NoOpenErr    move.l    IORequest(a4),a1
  334.         move    #TD_CHANGESTATE,IO_COMMAND(a1)
  335.         LINKSYS    DoIO
  336.         move.l    IORequest(a4),a1
  337.         move.l    IO_ACTUAL(a1),d0
  338.         beq.s    NoDiskError
  339.  
  340.         move.l    Windowhd(a4),a0
  341.         lea    NoDiskErr,a1
  342.         move.l    #0,a2
  343.         lea    AbortText,a3
  344.         moveq    #0,d0
  345.         moveq    #0,d1
  346.         move    #281,d2
  347.         moveq    #53,d3
  348.         LINKINT    AutoRequest
  349.         bra.s    CloseInstall
  350.  
  351. NoDiskError    move    #TD_PROTSTATUS,IO_COMMAND(a1)
  352.         LINKSYS    DoIO            ; Check write protect
  353.         move.l    IORequest(a4),a1
  354.         move.l    IO_ACTUAL(a1),d0
  355.         beq.s    NoProtErr
  356.  
  357.         move.l    Windowhd(a4),a0
  358.         lea    ProtectErr,a1
  359.         move.l    #0,a2
  360.         lea    AbortText,a3
  361.         moveq    #0,d0
  362.         moveq    #0,d1
  363.         move    #265,d2
  364.         moveq    #53,d3
  365.         LINKINT    AutoRequest
  366.         bra.s    CloseInstall
  367.  
  368. NoProtErr    move.l    #1024,IO_LENGTH(a1)    ; Set up command
  369.         move.l    DiskBuffer(a4),IO_DATA(a1)
  370.         move    #CMD_WRITE,IO_COMMAND(a1)
  371.         move.l    #0,IO_OFFSET(a1)
  372.         LINKSYS    DoIO            ; Send new bootblock
  373.  
  374.         move.l    IORequest(a4),a1
  375.         move.b    IO_ERROR(a1),d0
  376.         beq.s    NoWriteErr
  377.         bsr.s    ErrorTime
  378.  
  379. CloseInstall    move.l    IORequest(a4),a1
  380.         CALLEXEC CloseDevice
  381.         bra    CheckMessage
  382.  
  383. NoWriteErr    move    #CMD_UPDATE,IO_COMMAND(a1)
  384.         LINKSYS    DoIO            ; Force track write
  385.  
  386.         move.l    IORequest(a4),a1
  387.         move.l    #0,IO_LENGTH(a1)
  388.         move    #TD_MOTOR,IO_COMMAND(a1)
  389.         LINKSYS    DoIO            ; Motor off
  390.  
  391.         move.l    IORequest(a4),a1
  392.         LINKSYS    CloseDevice        ; Tidy and leave
  393.         bra    CheckMessage
  394.  
  395. ErrorTime    move.l    Windowhd(a4),a0
  396.         lea    GeneralErr,a1
  397.         move.l    #0,a2
  398.         lea    AbortText,a3
  399.         moveq    #0,d0
  400.         moveq    #0,d1
  401.         move    #276,d2
  402.         moveq    #53,d3
  403.         LINKINT    AutoRequest
  404.         rts
  405.  
  406.         ; The following code represents the standard 1.3 bootblock
  407.  
  408. SBBlock        dc.b    "DOS",0
  409.         dc.l    $C0200F19
  410.         dc.l    $00000370
  411.         lea    Boot1(pc),a1
  412.         jsr    _LVOFindResident(a6)
  413.         tst.l    d0
  414.         beq.s    Boot2
  415.         move.l    d0,a0
  416.         move.l    22(a0),a0
  417.         moveq    #0,d0
  418. Boot3        rts
  419. Boot2        moveq    #-1,d0
  420.         bra.s    Boot3
  421. Boot1        dc.b    "dos.library"
  422.         even
  423. EBBlock
  424.         ; This code is the 2.04 bootblock
  425.  
  426. SNBBlock    dc.b    "DOS",0
  427.         dc.l    $E33D0E73
  428.         dc.l    $00000370
  429.         lea    NBoot1(pc),a1
  430.         moveq    #37,d0
  431.         jsr    _LVOOpenLibrary(a6)
  432.         tst.l    d0
  433.         beq.s    NBoot2
  434.         movea.l    d0,a1
  435.         bset    #6,34(a1)
  436.         jsr    _LVOCloseLibrary(a6)
  437. NBoot2        lea    NBoot3(pc),a1
  438.         jsr    _LVOFindResident(a6)
  439.         tst.l    d0
  440.         beq.s    NBoot4
  441.         movea.l    d0,a0
  442.         movea.l    22(a0),a0
  443.         moveq    #0,d0
  444.         rts
  445. NBoot4        moveq    #-1,d0
  446.         rts
  447.  
  448. NBoot3        dc.b    "dos.library",0
  449. NBoot1        dc.b    "expansion.library",0
  450.         even
  451. ENBBlock
  452.         section    Install_Data,data
  453.  
  454. MyWindow    dc.w    80,35,202,81
  455.         dc.b    0,1
  456.         dc.l    GADGETUP!CLOSEWINDOW
  457.         dc.l    WINDOWDRAG!WINDOWDEPTH!WINDOWCLOSE!ACTIVATE!SMART_REFRESH
  458.         dc.l    Gadg0,0,WindName,0,0
  459.         dc.w    0,0,0,0,WBENCHSCREEN
  460. WindName    dc.b    "Install v1.1",0
  461.         even
  462.  
  463. BootMenu    dc.l    0
  464.         dc.w    5,0,88,0,MENUENABLED
  465.         dc.l    BootName
  466.         dc.l    KS13
  467.         dc.w    0,0,0,0
  468. BootName    dc.b    "BootBlock",0
  469.         even
  470.  
  471. KS13        dc.l    KS20
  472.         dc.w    0,0,120+COMMWIDTH+CHECKWIDTH,10
  473.         dc.w    HIGHCOMP!ITEMENABLED!ITEMTEXT!COMMSEQ!CHECKIT!CHECKED
  474.         dc.l    2,KS13Name,0
  475.         dc.b    "1",0
  476.         dc.l    0
  477.         dc.w    0
  478. KS13Name    dc.b    0,1,0,0
  479.         dc.w    1+CHECKWIDTH,1
  480.         dc.l    0,KS13Text,0
  481. KS13Text    dc.b    "KickStart 1.3",0
  482.         even
  483.  
  484. KS20        dc.l    0
  485.         dc.w    0,10,120+COMMWIDTH+CHECKWIDTH,10
  486.         dc.w    HIGHCOMP!ITEMENABLED!ITEMTEXT!COMMSEQ!CHECKIT
  487.         dc.l    1,KS20Name,0
  488.         dc.b    "2",0
  489.         dc.l    0
  490.         dc.w    0
  491. KS20Name    dc.b    0,1,0,0
  492.         dc.w    1+CHECKWIDTH,1
  493.         dc.l    0,KS20Text,0
  494. KS20Text    dc.b    "KickStart 2.0",0
  495.         even
  496.  
  497. Gadg0        dc.l    Gadg1
  498.         dc.w    14,15,80,20,GADGHCOMP,RELVERIFY,BOOLGADGET
  499.         dc.l    GadgBord1,0,Gadg0Text,0,0
  500.         dc.w    0
  501.         dc.l    0
  502. Gadg0Text    dc.b    1,0,0,0
  503.         dc.w    28,6
  504.         dc.l    NormText,Gadg0Txt,0
  505. Gadg0Txt    dc.b    "DF0",0
  506.         even
  507.  
  508. Gadg1        dc.l    Gadg2
  509.         dc.w    108,15,80,20,GADGHCOMP,RELVERIFY,BOOLGADGET
  510.         dc.l    GadgBord1,0,Gadg1Text,0,0
  511.         dc.w    1
  512.         dc.l    0
  513. Gadg1Text    dc.b    1,0,0,0
  514.         dc.w    28,6
  515.         dc.l    NormText,Gadg1Txt,0
  516. Gadg1Txt    dc.b    "DF1",0
  517.         even
  518.  
  519. Gadg2        dc.l    Gadg3
  520.         dc.w    14,42,80,20,GADGHCOMP,RELVERIFY,BOOLGADGET
  521.         dc.l    GadgBord1,0,Gadg2Text,0,0
  522.         dc.w    2
  523.         dc.l    0
  524. Gadg2Text    dc.b    1,0,0,0
  525.         dc.w    28,6
  526.         dc.l    NormText,Gadg2Txt,0
  527. Gadg2Txt    dc.b    "DF2",0
  528.         even
  529.  
  530. Gadg3        dc.l    0
  531.         dc.w    108,42,80,20,GADGHCOMP,RELVERIFY,BOOLGADGET
  532.         dc.l    GadgBord1,0,Gadg3Text,0,0
  533.         dc.w    3
  534.         dc.l    0
  535. Gadg3Text    dc.b    1,0,0,0
  536.         dc.w    28,6
  537.         dc.l    NormText,Gadg3Txt,0
  538. Gadg3Txt    dc.b    "DF3",0
  539.         even
  540.  
  541. CheckText    dc.b    0,0,0,0
  542.         dc.w    9,7
  543.         dc.l    NormText,CheckTxt,0
  544. CheckTxt    dc.b    "Install disk in drive DF"
  545. CheckTxtPt    dc.b    "0. Are you sure?",0
  546.         even
  547.  
  548. Text        dc.b    1,0,0,0
  549.         dc.w    13,0
  550.         dc.l    NormText,Txt,0
  551. Txt        dc.b    "© 1990 by David Kinder",0
  552.         even
  553.  
  554. GadgBord1    dc.w    -2,-1
  555.         dc.b    1,0,0,5
  556.         dc.l    Coords1,GadgBord2
  557. Coords1        dc.w    0,0,83,0,83,21,0,21,0,0
  558.  
  559. GadgBord2    dc.w    -2,-1
  560.         dc.b    1,0,0,2
  561.         dc.l    Coords2,GadgBord3
  562. Coords2        dc.w    1,0,1,21
  563.  
  564. GadgBord3    dc.w    -2,-1
  565.         dc.b    1,0,0,2
  566.         dc.l    Coords3,0
  567. Coords3        dc.w    82,0,82,21
  568.  
  569. x2_GBord1    dc.w    0,0
  570.         dc.b    2,0,0,5
  571.         dc.l    x2_Coords1,x2_GBord2
  572. x2_Coords1    dc.w    82,0,0,0,0,21,1,20,1,0
  573.  
  574. x2_GBord2    dc.w    0,0
  575.         dc.b    1,0,0,5
  576.         dc.l    x2_Coords2,0
  577. x2_Coords2    dc.w    1,21,83,21,83,0,82,1,82,21
  578.  
  579. NormText    dc.l    NormFont
  580.         dc.w    8
  581.         dc.b    0,0
  582. NormFont    dc.b    "topaz.font",0
  583.         even
  584.  
  585. TrackDisk    dc.b    "trackdisk.device",0
  586.         even
  587.  
  588. ScreenTitle    dc.b    "Insert disk to be installed then click"
  589.         dc.b    " on the appropriate gadget",0
  590.         even
  591.  
  592. AbortText    dc.b    0,1,0,0
  593.         dc.w    6,3
  594.         dc.l    NormText,AbortTxt,0
  595. AbortTxt    dc.b    "Abort Operation",0
  596.         even
  597.  
  598. GeneralErr    dc.b    0,1,0,0
  599.         dc.w    9,7
  600.         dc.l    NormText,GeneralTxt,0
  601. GeneralTxt    dc.b    "Cannot install specified disk",0
  602.         even
  603.  
  604. ProtectErr    dc.b    0,1,0,0
  605.         dc.w    9,7
  606.         dc.l    NormText,ProtectTxt,0
  607. ProtectTxt    dc.b    "The disk is write protected!",0
  608.         even
  609.  
  610. NoDiskErr    dc.b    0,1,0,0
  611.         dc.w    9,7
  612.         dc.l    NormText,NoDiskTxt,0
  613. NoDiskTxt    dc.b    "There is no disk in the drive!",0
  614.         even
  615.  
  616. CYes        dc.b    0,1,0,0
  617.         dc.w    6,3
  618.         dc.l    NormText,TYes,0
  619. TYes        dc.b    "Yes",0
  620.         even
  621.  
  622. CNo        dc.b    0,1,0,0
  623.         dc.w    6,3
  624.         dc.l    NormText,TNo,0
  625. TNo        dc.b    "No",0
  626.         even
  627.  
  628. ToolType    dc.b    "NOCHECK",0
  629.         even
  630.  
  631. DosName        DOSNAME
  632. IconName    ICONNAME
  633. IntName        INTNAME
  634.  
  635.         rsreset                ; Install uninitialised
  636. IORequest    rs.l    1            ; data structure
  637. MsgPort        rs.l    1
  638. Windowhd    rs.l    1
  639. UserPort    rs.l    1
  640. DiskBuffer    rs.l    1
  641. DiskBuffer1    rs.l    1
  642. DiskBuffer2    rs.l    1
  643. ReturnMsg    rs.l    1
  644. _DosBase    rs.l    1
  645. _IconBase    rs.l    1
  646. _IntuitionBase    rs.l    1
  647. CheckTest    rs.b    1
  648. Data_SIZEOF    rs.b    0
  649.